txl = {'李明':'18577778888','张宏':'13966667777'}

def menu1():
    print('''\033[0;34m欢迎使用通讯录小程序
功能如下：\033[0m''')
def menu2():
    print('''\033[0;34m1.查询
2.更新
3.加入
4.删除
5.显示
6.退出\033[0m''')

def cx(name):
    if txl.get(name,'空') == '空':
        return '\033[0;31m通讯录无此人\033[0m'
    return '\033[0;32m{}的电话是{}\033[0m'.format(name,txl.get(name,'空'))
def cxhm(xchm):
    for key, value in txl.items():
        if value == xchm:
            return '\033[0;32m此号码是{}的\033[0m'.format(key)
        else:
            return '\033[0;31m号码不存在\033[0m'
def gx(oldxm,newdh):
    if txl.get(oldxm,'空') == '空':
        return '\033[0;31m通讯录无此人\033[0m'
    else:
        txl[oldxm] = newdh
        return '\033[0;32m更新成功\033[0m'
def gxxm(xmold,xmnew):
    if txl.get(xmold,'空') == '空':
        return '\033[0;31m通讯录无此人\033[0m'
    else:
        txl[xmnew] = txl.pop(xmold)
        return '\033[0;32m更新成功\033[0m'
def cr(newxm,dydh):
    txl[newxm] = dydh
    return '\033[0;32m加入成功\033[0m'
def sc(wyxm):
    if txl.pop(wyxm,'空') == '空':
        return '\033[0;31m用户不存在\033[0m'
    return '\033[0;32m删除成功\033[0m'
def scxm(xmold):
    if txl.get(xmold,'空') == '空':
        return '\033[0;31m通讯录无此人\033[0m'
    else:
        txl[None] = txl.pop(xmold)
        return '\033[0;32m删除成功\033[0m'
def xs():
    for k,v in txl.items():
        print('\033[0;34m姓名：{}\n电话：{}\033[0m'.format(k,v))

def zcx():
    print('''\033[0;34m1.查询姓名
2.查询电话
3.返回\033[0m''')
def zgx():
    print('''\033[0;34m1.更新电话
2.更新姓名
3.返回\033[0m''')
def zsc():
    print('''\033[0;34m1.删除姓名
2.删除电话
3.删除姓名和电话
4.全部删除
5.返回\033[0m''')
def zxs():
    print('''\033[0;34m1.显示所有姓名
2.显示所有电话
3.显示全部
4.返回\033[0m''')

if __name__ == '__main__':
    menu1()
    menu2()
    while True:
        xxx = 0
        while xxx == 0:
            a = input('请输入选择(1~6)：')
            if a == '1':
                zcx()
                yyy = 0
                while yyy == 0:
                    cx1 = input('请选择(1~3)：')
                    if cx1 == '1':
                        name = input('请输入查询的姓名：')
                        print(cx(name))
                        xxx,yyy = 1,1
                    elif cx1 == '2':
                        xchm = input('请输入查询的号码：')
                        print(cxhm(xchm))
                        xxx,yyy = 1,1
                    elif cx1 == '3':
                        print('\033[0;32m已返回\033[0m')
                        menu2()
                        xxx,yyy = 0,1
                    else:
                        print('\033[0;31m输入有误，请重新输入\033[0m')
                        zcx()
                        xxx, yyy = 0, 0
            elif a == '2':
                zgx()
                yyy = 0
                while yyy == 0:
                    gx1 = input('请选择(1~3)：')
                    if gx1 == '1':
                        oldxm = input('请输入想更新的姓名：')
                        newdh = input('请输入新号码：')
                        print(gx(oldxm,newdh))
                        xs()
                        xxx,yyy = 1,1
                    elif gx1 == '2':
                        xmold = input('请输入旧姓名：')
                        xmnew = input('请输入新姓名：')
                        print(gxxm(xmold,xmnew))
                        xs()
                        xxx,yyy = 1,1
                    elif gx1 == '3':
                        print('\033[0;32m已返回\033[0m')
                        menu2()
                        xxx,yyy = 0,1
                    else:
                        print('\033[0;31m输入有误，请重新输入\033[0m')
                        zgx()
                        xxx,yyy = 0,0
            elif a == '3':
                newxm = input('请输入加入的姓名：')
                dydh = input('请输入对应的电话：')
                print(cr(newxm,dydh))
                xs()
                xxx = 1
            elif a == '4':
                zsc()
                yyy = 0
                while yyy == 0:
                    sc1 = input('请输入(1~5)：')
                    if sc1 == '1':
                        print('\033[0;31m警告：删除姓名后将无法查询对应号码\033[0m')
                        jg = input('\033[0;31m是否继续(1是2否)：\033[0m')
                        if jg == '1':
                            xmold = input('请输入需要删除的姓名：')
                            print(scxm(xmold))
                            xs()
                            xxx,yyy = 1,1
                        else:
                            print('\033[0;32m已返回\033[0m')
                            zsc()
                            xxx,yyy = 0,0
                    elif sc1 == '2':
                        oldxm = input('请输入删除电话的姓名：')
                        newdh = None
                        print(gx(oldxm, newdh))
                        xs()
                        xxx, yyy = 1, 1
                    elif sc1 == '3':
                        wyxm = input('请输入删除对象的姓名：')
                        print(sc(wyxm))
                        xs()
                        xxx,yyy = 1,1
                    elif sc1 == '4':
                        txl.clear()
                        print('\033[0;32m删除成功\033[0m')
                        xs()
                        xxx,yyy = 1,1
                    elif sc1 == '5':
                        print('\033[0;32m已返回\033[0m')
                        menu2()
                        xxx,yyy = 0,1
                    else:
                        print('\033[0;31m输入有误，请重新输入\033[0m')
                        zsc()
                        xxx, yyy = 0, 0
            elif a == '5':
                zxs()
                yyy = 0
                while yyy == 0:
                    xs1 = input('请输入(1~4)：')
                    if xs1 == '1':
                        for key in txl.keys():
                            print('\033[0;34m{}\033[0m'.format(key))
                        xxx,yyy = 1,1
                    elif xs1 == '2':
                        for value in txl.values():
                            print('\033[0;34m{}\033[0m'.format(value))
                        xxx,yyy = 1,1
                    elif xs1 == '3':
                        xs()
                        xxx,yyy = 1,1
                    elif xs1 == '4':
                        print('\033[0;32m已返回\033[0m')
                        menu2()
                        xxx,yyy = 0,1
                    else:
                        print('\033[0;31m输入有误，请重新输入\033[0m')
                        zxs()
                        xxx, yyy = 0, 0
            elif a == '6':
                exit('\033[0;32m欢迎下次使用\033[0m')
                break
            else:
                print('\033[0;31m输入有误，请重新输入\033[0m')
                menu2()
                xxx = 0
        while xxx == 1:
            jx = input('继续使用输入1，退出输入2，请输入：')
            if jx == '1':
                menu2()
                xxx = 0
            elif jx == '2':
                exit('\033[0;32m欢迎下次使用\033[0m')
                break
            else:
                print('\033[0;31m输入有误，请重新输入\033[0m')